// 应用音量的函数
export function applyVolume(volume) {
  const mediaElements = document.querySelectorAll('audio, video');
  mediaElements.forEach(element => {
    if (volume <= 100) {
      element.volume = volume / 100;
    } else {
      // 当音量大于100%时，使用非线性增长，但将结果限制在0-1之间
      const factor = (volume - 100) / 900; // 0 到 1 之间的值
      element.volume = Math.min(1, 1 + Math.pow(factor, 1/3)); // 使用立方根函数使增长更加激进，但限制最大值为1
    }

    // 如果浏览器支持 AudioContext，我们可以使用它来进一步增强音量
    if (window.AudioContext || window.webkitAudioContext) {
      if (!element.audioContext) {
        const AudioContext = window.AudioContext || window.webkitAudioContext;
        element.audioContext = new AudioContext();
        element.source = element.audioContext.createMediaElementSource(element);
        element.gain = element.audioContext.createGain();
        element.source.connect(element.gain);
        element.gain.connect(element.audioContext.destination);
      }

      // 使用 gain 节点来增强音量
      if (volume > 100) {
        const gainFactor = 1 + (volume - 100) / 100; // 线性增长，100%对应1，200%对应2，以此类推
        element.gain.gain.setValueAtTime(gainFactor, element.audioContext.currentTime);
      } else {
        element.gain.gain.setValueAtTime(1, element.audioContext.currentTime);
      }
    }
  });
}

// 获取当前视频/音频元素的音量
export function getCurrentVolume() {
  const mediaElement = document.querySelector('audio, video');
  if (mediaElement) {
    return Math.round(mediaElement.volume * 100);
  }
  return 100; // 如果没有找到媒体元素，默认为100
}